const mongoose = require('../index').mongoose

// 用户模型
let userSchema = new mongoose.Schema({
  openid: String,                // 微信openid
  nickname: String,              // 用户昵称
  avatar: String,                // 用户头像
  city: String,                  // 用户所在城市
  province: String,              // 用户所在省份
  gender: String,                // 性别（male/female）
  age: Number,                   // 年龄
  interests: [String],           // 兴趣标签（如：['瘦脸', '补水保湿']）
  viewHistory: [{                // 浏览历史
    productId: String,           // 商品ID
    viewTime: { type: Date, default: Date.now }  // 浏览时间
  }],
  createTime: { type: Date, default: Date.now }  // 创建时间
})

// 商品模型
let productSchema = new mongoose.Schema({
  title: String,                 // 商品标题/名称
  price: Number,                 // 基础价格（元）
  originalPrice: Number,         // 基础原价（元）
  saved: Number,                 // 基础节省金额（元）
  hospitals: [{                  // 关联的医院列表（支持多医院）
    hospitalId: { type: mongoose.Schema.Types.ObjectId, ref: 'hospital', required: true }, // 医院ID（外键）
    hospitalName: String,        // 医院名称（冗余存储，提高查询效率）
    price: Number,               // 该医院的特定价格（可选，如果不同医院价格不同）
    originalPrice: Number,       // 该医院的原价（可选）
    isActive: { type: Boolean, default: true }, // 该医院是否启用此产品
    addedTime: { type: Date, default: Date.now } // 该医院添加此产品的时间
  }],
  rating: Number,                // 评分（如4.8分）
  tags: [String],                // 商品标签数组（如：['深层补水', '改善干燥']）
  image: String,                 // 主要商品图片URL（向后兼容）
  images: [String],              // 商品图片URL数组（支持多图片，最多9张）
  category: { type: mongoose.Schema.Types.ObjectId, ref: 'producttype' }, // 商品分类ID（外键引用producttype集合）
  isHot: { type: Boolean, default: false },  // 是否热门商品
  viewCount: { type: Number, default: 0 },   // 浏览次数
  createTime: { type: Date, default: Date.now }  // 创建时间
})

// 医院模型
let hospitalSchema = new mongoose.Schema({
  name: String,                  // 医院名称
  logo: String,                  // 医院logo图片URL
  rating: Number,                // 医院评分（如4.6分）
  location: String,              // 医院详细地址
  city: String,                  // 城市（如：石家庄市）
  province: String,              // 省份（如：河北省）
  tag: String,                   // 医院标签（如：石家庄市吸脂人气热销榜第1名）
  category: String,              // 医院分类（民营、公立）
  status: { type: String, enum: ['active', 'inactive'], default: 'inactive' }, // 医院状态（启用/禁用）
  viewCount: { type: Number, default: 0 },   // 浏览次数
  createTime: { type: Date, default: Date.now },  // 创建时间
  // 关联字段（数量通过数组长度计算）
  service: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Service' }], // 服务记录ID数组
  review: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Review' }],   // 评价记录ID数组
  doctor: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Doctor' }],   // 医生记录ID数组
  products: [{ type: mongoose.Schema.Types.ObjectId, ref: 'product' }] // 产品ID数组（外键关联）
})

// 医生模型
let doctorSchema = new mongoose.Schema({
  name: String,                  // 医生姓名
  hospital: String,              // 所属医院名称
  hospitalId: { type: mongoose.Schema.Types.ObjectId, ref: 'hospital' }, // 医院ID（外键关联医院表）
  avatar: String,                // 医生头像图片URL
  specialties: [String],         // 专业领域数组（如：['眼部整形', '美体塑形', '脂肪填充']）
  tag: String,                   // 医生标签（如：石家庄市祛眼袋人气热销榜第1名）
  category: String,              // 医生分类（热门、眼部整形、美体塑形、脂肪填充、瘦脸轮廓）
  city: String,                  // 城市（如：石家庄市）
  province: String,              // 省份（如：河北省）
  isHot: { type: Boolean, default: false },  // 是否热门医生
  viewCount: { type: Number, default: 0 },   // 浏览次数
  createTime: { type: Date, default: Date.now },  // 创建时间
  products: [{                   // 医生产品列表
    id: { type: mongoose.Schema.Types.ObjectId, ref: 'product' }, // 产品ID（外键关联产品表）
    image: String,               // 产品图片URL
    title: String,               // 产品标题
    price: Number,               // 产品价格
    saved: Number                // 节省金额
  }]
})

// 轮播图模型
let bannerSchema = new mongoose.Schema({
  image: String,                 // 轮播图背景图片URL
  title: String,                 // 主标题（如：享SHOW盛夏）
  subtitle: String,              // 副标题（如：超级补贴）
  tag: String,                   // 标签（如：HOT、SALE、50%）
  offer: String,                 // 优惠信息（如：瘦肩瘦腿200U ¥999起）
  city: String,                  // 城市（如：石家庄市，空值表示全国通用）
  province: String,              // 省份（如：河北省，空值表示全国通用）
  isActive: { type: Boolean, default: true },  // 是否激活
  sort: { type: Number, default: 0 },          // 排序权重
  createTime: { type: Date, default: Date.now } // 创建时间
})

// 创建模型
let userModel = mongoose.model('cosmetic_user', userSchema, 'cosmetic_user')
let productModel = mongoose.model('product', productSchema, 'product')
let hospitalModel = mongoose.model('hospital', hospitalSchema, 'hospital')
let doctorModel = mongoose.model('doctor', doctorSchema, 'doctor')
let bannerModel = mongoose.model('banner', bannerSchema, 'banner')

// 导出医美模块的所有模型
module.exports = {
  userModel,
  productModel,
  hospitalModel,
  doctorModel,
  bannerModel
}
